import base64
import random
import io
import os
from flask import Flask, request, render_template, redirect, send_file
import qrcode


app = Flask(__name__)


@app.route('/')
def hello_world():
    return render_template("index.html")


@app.route('/qr')
def qrcode1():
    return render_template("qrcode.html")


@app.route('/qrtool0', methods=['GET', 'POST'])
def qrcode_tool0():
    file_list = os.listdir("./static")
    if len(file_list) > 10:
        for file in file_list:
            path_file = os.path.join("./static", file)
            if os.path.isfile(path_file):
                os.remove(path_file)
    path = random.randint(0, 10000)
    content = request.args['content']
    img = qrcode.make(content)
    img.save("static/{}.jpg".format(path))
    return redirect("/static/{}.jpg".format(path))


@app.route('/qrtool1', methods=['GET', 'POST'])
def qrcode_tool1():

    content = request.args['content']
    # 创建一个BytesIO对象，用于在内存中存储二维码图像数据
    bi = io.BytesIO()
    # 调用img对象的save方法将二维码图像数据以png编码格式写入bi对象管理的内存空间
    img = qrcode.make(content)

    img.save(bi, "png")
    return u"data:image/png;base64,{}".format(base64.b64encode(bi.getvalue()).decode('ascii'))


@app.route('/qrtool2', methods=['GET', 'POST'])
def qrcode_tool2():

    content = request.args['content']
    # 创建一个BytesIO对象，用于在内存中存储二维码图像数据
    bi = io.BytesIO()
    # 调用img对象的save方法将二维码图像数据以png编码格式写入bi对象管理的内存空间
    img = qrcode.make(content)

    img.save(bi, "png")
    # 将bi对象内部位置指针移动到图像数据的起始位置
    bi.seek(0)
    return send_file(bi, "image/png")


if __name__ == '__main__':
    app.run(port=8880, debug=True)
